package com.sale.salesystem.service;

import com.sale.salesystem.vo.DashboardPermissionVO;
import java.util.List;

public interface DashboardPermissionService {
    // 获取仪表板信息（包括所有者和访问者）
    DashboardPermissionVO getDashboardInfo(Long dashboardId);

    // 获取仪表板的访问者列表
    DashboardPermissionVO getVisitors(Long dashboardId);

    // 添加访问者（使用用户名）
    void addVisitor(Long dashboardId, String username);

    // 移除访问者（使用用户名）
    void removeVisitor(Long dashboardId, String username);

    // 转让所有权（使用用户名）
    void transferOwner(Long dashboardId, String newOwnerUsername);

    // 检查用户是否有权限访问仪表板
    boolean hasPermission(Long userId, Long dashboardId);

    // 获取用户可访问的所有仪表板
    List<DashboardPermissionVO> getUserDashboards(Long userId);

    /**
     * 检查用户是否有权限访问指定类型的仪表板
     * @param userId 用户ID
     * @param type 仪表板类型
     * @return 是否有权限
     */
    boolean hasPermission(Long userId, String type);

    /**
     * 获取用户可访问的所有仪表板类型
     * @param userId 用户ID
     * @return 仪表板类型列表
     */
    List<String> getUserAccessibleDashboardTypes(Long userId);
}